<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>自定义指令</title>
    <script src="../commonjs/vue.js"></script>
</head>
<body>
    <div id="root">
        <!--
            1.定义一个v-big指令，与v-text相似，让绑定的数值放大10倍
            2.定义一个v-fbind指令，与v-bind相似，让绑定的元素自动获取焦点
        -->
        <h2>当前n:<span v-text="n"></span></h2>
        <h2>放大的n:<span v-big="n"></span></h2>
        <button @click="n++">点我n+1</button>
        <hr/>
        <input type="text" :value="n"><!--v-bind-->
        <input type="text" v-fbind:value="n"><!--v-fbind:直接获取焦点了-->
    </div>
    <hr>
    <hr>
    <div id="root2">
        <input type="text" v-fbind="x">
    </div>
    <script>
        Vue.config.productionTip = false;//关闭开发提示
        //全局自定义指令
        Vue.directive('fbind',{
            //指令与元素成功绑定时
            bind(element,binding){
                element.value = binding.value
            },
            //元素被插入页面时
            inserted(element,binding){
                element.focus()
            },
            //指令所在模板被更新时
            update(element,binding){
                element.value = binding.value
            }
        })
        new Vue({
            el:'#root',
            data:{
                n:1
            },
            directives:{
                //函数式自定义指令
                big(element,binding){ //调用时机:1.指令与元素成功绑定时2.指令所在的模板被重新解析时
                    element.innerText = binding.value * 10
                },
                //对象式自定义
                /*fbind:{
                    //指令与元素成功绑定时
                    bind(element,binding){
                        element.value = binding.value
                    },
                    //元素被插入页面时
                    inserted(element,binding){
                        element.focus()
                    },
                    //指令所在模板被更新时
                    update(element,binding){
                        element.value = binding.value
                    }
                }*/
            }
        })
        new Vue({
            el:'#root2',
            data:{
                x:2
            }
        })
    </script>
</body>
</html>